package com.luoqian.demo01;

import java.io.FileInputStream;
import java.lang.reflect.Method;
import java.util.Properties;

public class PropertiesTest {

    public static void main(String[] args) throws Exception {
        //1.使用properties类 读取配置文件
        Properties properties = new Properties();
        properties.load(new FileInputStream("/Users/luoqian/IdeaProjects/Java_Base/Reflection_Project/src/re.properties"));
        String classFullpath = properties.get("classFullpath").toString();
        String methodName = properties.get("method").toString();
//
//        System.out.println("classFullpath="+classFullpath);
//        System.out.println("method="+method);

        //如何创建对象呢？
        //通过反射机制
        //1. 加载类，返回Class类型的对象class
        Class cls = Class.forName(classFullpath);
        //2. 通过cls 得到所加载类的对象实例
        Object o = cls.newInstance();
        // 运行类型
        System.out.println("o的运行类型是="+o.getClass());
        //3. 通过得到 你加载的类的方法对象！
        // 在反射机制中 可以将方法 属性 构造器 都视为对象
        Method method = cls.getMethod(methodName);
        // 传统观念 对象.方法  反射中：方法.invoke(对象)
        method.invoke(o);

    }
}
